package model;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import persistence.ConjuntoMapper;

public class Conjunto extends Producto {	
	private int descuento;
	private List<Prenda> prendas;

	public Conjunto(String codigo, String nombre, int cantidadStock, int descuento) {
		super(codigo, nombre, cantidadStock);
		this.descuento = descuento;
		this.prendas = new ArrayList<Prenda>();
	}
	
	public boolean guardar() {
		return ConjuntoMapper.getInstance().insertar(this);
	}
	
	public boolean modificar() {
		return ConjuntoMapper.getInstance().modificar(this);
	}
	
	public Conjunto(String codigo, String nombre, int cantidadStock, int descuento, List<Prenda> prendas) throws SQLException {
		super(codigo, nombre, cantidadStock);
		this.descuento = descuento;
		this.prendas = prendas;
		ConjuntoMapper.getInstance().insertar(this);
	}

	@Override
	public float obtenerPrecio() {
		float precio = 0;
		for(Prenda prenda: prendas) {
			precio += prenda.obtenerPrecio();
		}
		precio -= precio * ((float)descuento/100);
		return precio;
	}
	
	public int getDescuento() {
		return descuento;
	}
	
	public void setDescuento(int descuento) {
		this.descuento = descuento;
	}
	
	public void agregarPrenda(Prenda prenda) {
		prendas.add(prenda);
	}
	
	public void removerPrenda(Prenda prenda) {
		prendas.remove(prenda);
	}
	
	public List<Prenda> getPrendas() {
		return prendas;
	}
	
	public void setPrendas(List<Prenda> prendas) {
		this.prendas = prendas;
	}
	
	public String toString(){
		return "Conjunto: "+super.toString()+" prendas asociadas: "+prendas.size();
	}

	@Override
	public boolean puedoVender(int cantidad) {
		for(Prenda prenda: prendas) {
			if(!prenda.puedoVender(cantidad)) {
				return false;
			}
		}
		return true;
	}

	public boolean eliminar() {
		return ConjuntoMapper.getInstance().eliminar(this);
	}
}
